/* ==========================================================
 * sco.countdown.js
 * http://github.com/terebentina/sco.js
 * ==========================================================
 * Copyright 2013 Dan Caragea.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ========================================================== */

/*jshint laxcomma:true, sub:true, browser:true, jquery:true, devel:true */
	(function($, undefined) {
		"use strict";
		var pluginName = 'countDown';
		function doit($elem, data, until) {
			var str = ''
				,started = false
				,left = {d: 0, h: 0, m: 0, s: 0}
				,js_current = Math.round((new Date()).getTime() / 1000)
				;
			left.s = until - js_current;
			if (left.s < 0) {
				str += data.expire;
			}
			if (Math.floor(left.s / 86400) > 0) {
				left.d = Math.floor(left.s / 86400);
				left.s = left.s % 86400;
				str += left.d + data.d;
				started = true;
			}
			if (Math.floor(left.s / 3600) > 0) {
				left.h = Math.floor(left.s / 3600);
				left.s = left.s % 3600;
				started = true;
			}
			if (started) {
				str += left.h + data.h;
				started = true;
			}
			if (Math.floor(left.s / 60) > 0) {
				left.m = Math.floor(left.s / 60);
				left.s = left.s % 60;
				started = true;
			}
			if (started) {
				str += left.m + data.m;
				started = true;
			}
			if (left.s > 0) {
				started = true;
			}
			if (started) {
				str += left.s + data.s;
				started = true;
			}
			$elem.html(str);
			setTimeout(function() {doit($elem, data, until);}, 500);
		}
		$.fn[pluginName] = function(options) {
			var $this = $(this)
				,data = $this.data()
				,js_current;
			data = $.extend({}, $.fn[pluginName].defaults, options, data);
			if (!data.until) {
				var day = new Date();
				day.setMonth(day.getMonth() + 1);
				day.setDate(1);
				day.setHours(0);
				day.setMinutes(0);
				day.setSeconds(0);
				data.until = Math.round(day / 1000);
			}
			js_current = Math.round((new Date()).getTime() / 1000);
			if (!data.current) {
				data.current = js_current;
			}
			data.until -= (js_current - data.current);
			doit($this, data, data.until);
		};
		$.fn[pluginName].defaults = {
			d: '天', h: '小时', m: '分钟', s: '秒', expire: '已到期！'
		};
	}(jQuery));
